package com.atguigu.gulimall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/*
* 1.如何使用Nacos作为配置中心统一管理配置
*   1）引入依赖
*<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

     2）创建一个配置文件 bootstrap.properties
     * 添加两条：spring.application.name=gulimall-coupon

                spring.cloud.nacos.config.server-addr=127.0.0.1:8848
                *
                *
     3）需要给配置中心默认添加一个叫 数据集（Data Id） gulimall-coupon.properties 默认规则   应用名.properties
     4)给 应用名.properties添加任何配置
     5）给主程序添加动态获取注释
     * @RefreshScope  :动态获取并刷新配置
     * @Value("${配置项目的名字}")：获取到配置值
     * 如果配置中心和当前应用的配置文件中都配置了相同的项，会优先使用配置中心的值
*2.细节
*   1）命名空间：配置隔离
*       默认：public(保留空间);默认新增的所有配置都在public空间
*       1.开发，测试，生产：利用命名空间来做环境隔离
*           注意：在bootstrap.properties配置上，需要使用哪个命名空间下的配置
*           spring.cloud.nacos.config.namespace=a9864557-7b18-4e68-8dc0-40f9045311aa
*            也可以各个微服务分别创建自己的命名空间来实现相互的配置隔离。
*   2）配置集：所有配置的集合
*
*   3）配置集ID：类似文件名
*       Data ID == 以前的配置文件名
*
*    4)配置分组：
*       默认所有的配置集都术语DEFAULT_GROUP
*       命名空间的概念大于分组的概念。
* 每个微服务创建自己的命名空间，使用配置分组来区分环境
*
*
* 3.同时加载多个配置集
*   1）微服务任何配置信息，任何配置文件都可以放在配置中心中
*   2）只需要在bootstrap.properties中说明加载配置中心的那些配置文件即可
*   3）@Value @ConfigurationProperties。。。以前SpringBoot从配置文件中获取值的方式，现在在nacos仍可使用
*   而且，配置中心中有的优先使用。
*
*
*
* */
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallCouponApplication.class, args);
    }

}
